package com.jt.controller;
/**用户系列操作*/
import com.jt.pojo.User;
import com.jt.service.UserService;
import com.jt.vo.PageResult;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.sql.SQLException;
import java.util.List;

@RestController
@RequestMapping("/user")
@CrossOrigin    //前后端进行跨域操作
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/findAll")
    public List<User> findAll(){

        return userService.findAll();
    }
    /**
     * 实现用户登录
     * URL: /user/londin
     * 请求类型: post
     * 参数:username/password  JSON串
     * 返回值: SysResult对象(token秘钥)
     */
    @PostMapping("/login")
    public SysResult login(@RequestBody User user){
        String token = userService.login(user);
        //判断token是否为空
        if (token == null){
            return SysResult.fail();
        }
        return SysResult.success(token);
    }

    /**
     * 业务需求: 分页查询用户数据
     * URL: /user/list
     * 类型: GET类型
     * 参数: pageResult接收
     *      http://localhost:8091/user/list?query=查询关键字&pageNum=1&pageSize=10
     * 返回值: SysResult(PageResult对象)
     */
    @GetMapping("/list")
    public SysResult findList(PageResult pageResult){  //3 个参数
        pageResult = userService.findList(pageResult); //3+2 总数 + 分页结果
        return SysResult.success(pageResult); //5
    }

    /**
     * 用户状态修改
     *  - 请求路径 /user/status/{id}/{status}
     *  - 请求类型	PUT
     *  - 请求参数: 	用户ID/状态值数据
     *  - 返回值:  SysResult
     */
    @PutMapping("/status/{id}/{status}")
    public SysResult updateStatus(User user){
        userService.updateStatus(user);
        return SysResult.success();
    }

    /**
     *     请求路径: /user/{id}
     *     请求类型: delete
     *     请求参数:id
     *     返回值: SysResult对象
     */
    @DeleteMapping("/{id}")
    public SysResult deleteUser(@PathVariable Integer id){
        userService.deleteUserById(id);
        return SysResult.success();
    }

    /**
     *     请求路径 /user/addUser
     *     请求类型 POST
     *     请求参数: 整个form表单数据封装为js对象进行参数传递
     *     返回值结果: SysResult对象
     */
    @PostMapping("/addUser")
    public SysResult addUser(@RequestBody User user){
        userService.addUser(user);
        return SysResult.success(); //200
    }

    /**
     * 用户更新操作--回显
     * 请求路径: /user/{id}
     * 请求类型: GET
     * 返回值: SysResult(User对象)
     */
    @GetMapping("/{id}")
    public SysResult findUserById(@PathVariable Integer id){
        User user = userService.findUserById(id);
        return SysResult.success(user);
    }

    /**
     * 用户更新操作--更新
     *     请求路径: /user/updateUser
     *     请求类型: PUT
     *     请求参数: User对象结构
     *     返回值: SysResult对象
     */
    @PutMapping("/updateUser")
    public SysResult updateUser(@RequestBody User user){
        userService.updateUser(user);
        return SysResult.success();
    }
}
